import store from '@/store'
import axios from 'axios'

// axios.defaults.baseURL如果这个配置只能请求同一个前缀的请求地址，有的项目又两个或者多个前缀
// 解决方法：axios.create(),创建新的axios对象
const request = axios.create({
  baseURL: 'http://toutiao.itheima.net'
  // 设置事件，如果超过3秒内还没有请求数据回来，直接请求出错，显示404
  // timeout: 3000
})

// 添加请求拦截器
request.interceptors.request.use(
  function (config) {
    // 在发送请求之前做些什么

    // 判断只要客户登录了，都在请求头上添加这个代码
    // console.log(config);

    const {
      getters: { isLogin },
      state: { tokenObj }
    } = store
    if (isLogin) {
      config.headers.Authorization = `Bearer ${tokenObj.token}`
    }
    return config
  },
  function (error) {
    // 对请求错误做些什么
    return Promise.reject(error)
  }
)

// 添加响应拦截器
request.interceptors.response.use(
  function (response) {
    // 2xx 范围内的状态码都会触发该函数。
    // 对响应数据做点什么
    return response
  },
  function (error) {
    // 超出 2xx 范围的状态码都会触发该函数。
    // 对响应错误做点什么
    return Promise.reject(error)
  }
)

// 暴露接口
export default request
